package Servlets;

import java.awt.List;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

//import quicktime.std.sg.AudioChannel;

import utilidades.Escritor;
import utilidades.HtmlGen;
import utilidades.Validador;


import Inscripcion.Participante;



@WebServlet("/Principal")
public class Principal extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet{
	  
//	public static HashMap<String,Participante> aInscritos;
	private static final long serialVersionUID = 1L;
	private ServletContext sc;
		
//	public HashMap<String,Participante> getaInscritos() {
//		return aInscritos;
//	}
//
//	public void setaInscritos(HashMap<String,Participante> aInscritos) {
//		this.aInscritos = aInscritos;
//	}

	public Principal() {
		super();
	}   	

	/**
	 * El init es invocado solo una vez por parte del motor de páginas de servidor aquí realizamos la lectura del fichero
	 * de persistencia
	 */
	public void init(ServletConfig config) throws ServletException{
		
		super.init(config);
		sc = getServletContext();

    }
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		doPost(request,response);
	}  	
	
	@SuppressWarnings("unused")
	protected void doPost(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		
		
		HttpSession session = request.getSession(true);
		
		Validador val = new Validador(sc);
		boolean respuesta = false;
		
		String uid 	= (String) session.getAttribute("user");
		String pass = (String) session.getAttribute("pass");
		

		if(uid != null && pass != null)
			respuesta = val.validar(uid, pass);

		
		//Capturamos los parámetros
		String accion = request.getParameter("accion");
		
		try{
			if(accion.equals("login")){
				request.getRequestDispatcher("/Login").forward(request, response);
			}
			
			if(accion.equals("registro")){
				if(respuesta){
					//TODO 	si ya tiene una sesión iniciada mostrar una página especifica que indique que no pued volver a
					//		a registrase
				}
				else{
					request.getRequestDispatcher("/Registro").forward(request, response);
					return;
				}
			}
			
			if(accion.equals("inscripcion")){
				if(!respuesta){
					
					response.setHeader("Cache-Control", "no-cache, no-store");
					response.setHeader("Pragma", "no-cache"); 
								 
					response.sendRedirect(request.getContextPath() + "/ErrorPages/accesDenied.html");
					
				}
				else{
					request.getRequestDispatcher("/Ingresar").forward(request, response);
					return;
				}
			}
			
			if(accion.equals("modificar")){
				if(!respuesta){
					response.setHeader("Cache-Control", "no-cache, no-store");
					response.setHeader("Pragma", "no-cache"); 
								 
					response.sendRedirect(request.getContextPath() + "/ErrorPages/accesDenied.html");
				}
				else{
					request.getRequestDispatcher("/Modificar").forward(request, response);
					return;
				}
			}
			
			if(accion.equals("baja")){
				if(!respuesta){
					response.setHeader("Cache-Control", "no-cache, no-store");
					response.setHeader("Pragma", "no-cache"); 
								 
					response.sendRedirect(request.getContextPath() + "/ErrorPages/accesDenied.html");
				}
				else{
					request.getRequestDispatcher("/Baja").forward(request, response);
					return;
				}
			}
			
			if(accion.equals("cambioInfoUser")){
				if(!respuesta){
					response.setHeader("Cache-Control", "no-cache, no-store");
					response.setHeader("Pragma", "no-cache"); 
								 
					response.sendRedirect(request.getContextPath() + "/ErrorPages/accesDenied.html");
				}
				else{
					request.getRequestDispatcher("/ReescribirInfo").forward(request, response);
					return;
				}
			}
			
			if(accion.equals("listarInscritos")){
				if(!respuesta){
					response.setHeader("Cache-Control", "no-cache, no-store");
					response.setHeader("Pragma", "no-cache"); 
								 
					response.sendRedirect(request.getContextPath() + "/ErrorPages/accesDenied.html");
				}
				else{
					request.getRequestDispatcher("/Inscritos").forward(request, response);
					return;
				}
			}
			
		}
		catch(Exception e){
			response.setHeader("Cache-Control", "no-cache, no-store");
			response.setHeader("Pragma", "no-cache"); 
						 
			response.sendRedirect(request.getContextPath() + "/ErrorPages/unknow.html");
		
		}
	}

	
	
	
}
